package com.epic.java.designpattern.single;

public class SingleInstance {
    private static SingleInstance singleInstance = new SingleInstance();
    private SingleInstance(){};

    public static  SingleInstance getInstance(){
        return singleInstance;
    }

    /**
     * 一上来就把单例对象创建出来了，要用的时候直接返回即可，这种可以说是单例模式中最简单的一种实现方式。但是问题也比较明显。单例在还没有使用到的时候，初始化就已经完成了。
     * 也就是说，如果程序从头到位都没用使用这个单例的话，单例的对象还是会创建。这就造成了不必要的资源浪费。所以不推荐这种实现方式。
     * @param args
     */
    public static void main(String[] args) {

    }
}
/**
 * 懒汉式(线程安全，调用效率不高，但是能延时加载)：
 */

/**
 * 单例模式最优volatile  和double check
 * https://spark.apache.org/docs/latest/streaming-programming-guide.html
 * 里面对Accumulators, Broadcast Variables, and Checkpoints 就是使用的这个模型
 *
 * org.springframework.core.ReactiveAdapterRegistry  这个也是经典使用在spring中
 */